Amazon ECRでAmazon EventBridgeのサポートが追加されましたっ!!
こんにちは、森です。
ECRへのプッシュ/削除時のアクションをトリガーできるように、Amazon EventBridgeのサポートが追加されるようになりました。
EventBridge Support in Amazon Elastic Container Registry
この追加機能により複雑なワークフローを実現することもできるようになる と説明されています。
イメージがプッシュされたときに継続的な統合、継続的な展開パイプラインをトリガーしたり、イメージが削除されたときにDevOpsチームSlackチャネルにメッセージを投稿したり などです
使ってみる
イメージのPush、削除をトリガーし、Slackに通知を送ってみようと思います。
Amazon EventBridgeのコンソールに移動し、新しいルールを作成します。
名前と説明 は任意のものを入力します。
パターンを定義の項目で、イベントパターン
を選択し、関連する項目を選択していきます。
- イベント一致パターン:
サービスごとの事前定義パターン
- サービスプロバイダー:
AWS
- サービス名:
Elastic Container Registry(ECR)
- イベントタイプ:
ECR Image Action
(アクションタイプとしてDELETEとPUSHの両方が含まれています)
イベントバスを選択の項目で、
AWS のデフォルトのイベントバス
、選択したイベントバスでルールを有効にする
をチェックします
ターゲットを選択の項目で、次にイベントの行き先を指定します。
今回はslackに通知するので、SNSでSlackにメッセージ送信する #slack のブログを参考にSNSでSlackにメッセージ送信する機能を作成しておきます。
ターゲットにSNS
トピック, トピックには作成済みのトピック名を選択します。
ここまで入力したら作成ボタンを押して作成します。
あとは新しいバージョンのコンテナをECRにプッシュし、イベント通知の確認をします。
サンプルとして、nginxのイメージを使用しています。
PUSH
docker tag nginx:latest <ECRのURL>/cm-mori-sample-repo:latest docker push <ECRのURL>/cm-mori-sample-repo:latest
ECRにpushされました。 連携先のslackをみてみると、
メッセージが届いています。(成型していないので雑ですがご勘弁を。。。)
アクションタイプはPUSHとなっていることがわかります。 "action-type\":\"PUSH\",
DELETE
ECRのコンソールでイメージを選択して削除してみます。
削除が完了すると、slackにメッセージが届きました。
アクションタイプはDELETEとなっていることがわかります。 "action-type\":\"DELETE\",
ECRのイベントと結びつけて色々なことができるようになりました。 今回試したことはECRのアクションに応じてSNSトピックを実行することでしたが、パイプラインを起動したり、ECSタスクを起動したりといった複雑なこともできそうです。
日々CI/CDの改善を行う人にはかなり良い機能ではないでしょうか?是非とも使いたいですね。
では、またの日を